﻿using System;
using System.Collections;
using System.Web.UI.WebControls;
using ASPNETVN.PORTAL.Components.UI;
using ASPNETVN.PORTAL.Components.Configuration.Settings;
using ASPNETVN.PORTAL.Components.UI.DataTypes;
using ASPNETVN.PORTAL.Components.Helpers;

namespace ASPNETVN.PORTAL.Modules.CONTACT
{
    public partial class Main : PortalModuleControl
    {
        public Main()
        {
            // Define an Array List
            ArrayList list1 = new ArrayList();

            // Sắp xếp theo cột.
            list1.Add(new ListItem("Họ và tên", "FullName"));
            list1.Add(new ListItem("Chức danh", "Role"));
            list1.Add(new ListItem("Email", "Email"));

            ModuleSettingItem item = new ModuleSettingItem(new CustomListDataType(list1, "Text", "Value"));
            item.Value = "FullName";
            item.Name = "Sắp xếp theo cột";
            item.Description = "Sắp xếp theo cột";
            item.SortOrder = 1;
            this.BaseSettings.Add("SortField", item);

            // Sắp xếp tăng dần / giảm dần.
            ArrayList list2 = new ArrayList();
            list2.Add(new ListItem("Tăng dần", "ASC"));
            list2.Add(new ListItem("Giảm dần", "DESC"));
            item = new ModuleSettingItem(new CustomListDataType(list2, "Text", "Value"));
            item.Value = "ASC";
            item.Name = "Sắp xếp tăng dần / giảm dần";
            item.Description = "Sắp xếp tăng dần / giảm dần";
            item.SortOrder = 2;
            this.BaseSettings.Add("SortDirection", item);

            // Contact1 title.
            item = new ModuleSettingItem(new BooleanDataType());
            item.Name = "Hiển thị contact 1";
            item.Description = "Hiển thị contact 1";
            item.SortOrder = 3;
            this.BaseSettings.Add("DisplayContact1", item);

            item = new ModuleSettingItem(new StringDataType("Contact 1"));
            item.Name = "Tiêu đề của contact 1";
            item.Description = "Tiêu đề của contact 1";
            item.SortOrder = 4;
            this.BaseSettings.Add("Contact1", item);

            // Contact2 title.
            item = new ModuleSettingItem(new BooleanDataType());
            item.Name = "Hiển thị contact 2";
            item.Description = "Hiển thị contact 2";
            item.SortOrder = 5;
            this.BaseSettings.Add("DisplayContact2", item);

            item = new ModuleSettingItem(new StringDataType("Contact 2"));
            item.Name = "Tiêu đề của contact 2";
            item.Description = "Tiêu đề của contact 2";
            item.SortOrder = 6;
            this.BaseSettings.Add("Contact2", item);

            // Contact3 title.
            item = new ModuleSettingItem(new BooleanDataType());
            item.Name = "Hiển thị contact 3";
            item.Description = "Hiển thị contact 3";
            item.SortOrder = 7;
            this.BaseSettings.Add("DisplayContact3", item);

            item = new ModuleSettingItem(new StringDataType("Contact 3"));
            item.Name = "Tiêu đề của contact 3";
            item.Description = "Tiêu đề của contact 3";
            item.SortOrder = 8;
            this.BaseSettings.Add("Contact3", item);

            // Contact4 title.
            item = new ModuleSettingItem(new BooleanDataType());
            item.Name = "Hiển thị contact 4";
            item.Description = "Hiển thị contact 4";
            item.SortOrder = 9;
            this.BaseSettings.Add("DisplayContact4", item);

            item = new ModuleSettingItem(new StringDataType("Contact 4"));
            item.Name = "Tiêu đề của contact 4";
            item.Description = "Tiêu đề của contact 4";
            item.SortOrder = 10;
            this.BaseSettings.Add("Contact4", item);
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            hfModuleID.Value = this.ModuleID.ToString();
        }

        protected string GetEditURL(int itemID)
        {
            return HttpUrlBuilder.BuildAddEditUrl(this.ModuleID, itemID, "AddEditContact", "");
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack == false)
            {
                this.ModuleTitle.AddUrl = HttpUrlBuilder.BuildAddEditUrl(this.ModuleID, 0, "AddEditContact", "");

                Hashtable settings = this.Settings;

                int index = 3;

                GridView1.Columns[index + 1].Visible = Boolean.Parse(settings["DisplayContact1"].ToString());
                GridView1.Columns[index + 2].Visible = Boolean.Parse(settings["DisplayContact2"].ToString());
                GridView1.Columns[index + 3].Visible = Boolean.Parse(settings["DisplayContact3"].ToString());
                GridView1.Columns[index + 4].Visible = Boolean.Parse(settings["DisplayContact4"].ToString());

                GridView1.Columns[index + 1].HeaderText = settings["Contact1"].ToString();
                GridView1.Columns[index + 2].HeaderText = settings["Contact2"].ToString();
                GridView1.Columns[index + 3].HeaderText = settings["Contact3"].ToString();
                GridView1.Columns[index + 4].HeaderText = settings["Contact4"].ToString();

                GridView1.Sort(settings["SortField"].ToString(), settings["SortDirection"].ToString() == "ASC" ? SortDirection.Ascending : SortDirection.Descending);
            }
        }
    }
}